import Vue from 'vue'
import vm from '../main'
// 事件总线
const eventBus = new Vue();
// 流水号
let no = 0;

const ws = new WebSocket('ws://localhost:1024/ws');
// 是否连接
let connect = false;
// 连接成功
ws.onopen = () => connect = true;
// 接收消息
ws.onmessage = (response) => {
  const data = JSON.parse(response.data)
  // 失败
  if (data.id === 0x100 && data.result === 2 && data.content !== '') {
    vm.$message.error(data.content)
  }
  console.info(`Receive content: ${JSON.stringify(data)}`)
  eventBus.$emit('ID' + data.id, data);
};

function sendMessage(data) {
  if (!connect) {
    setTimeout(() => {
      sendMessage(data)
    }, 0);
  } else {
    ws.send(JSON.stringify(data));
  }

}

// 接受Send事件消息
eventBus.$on('Send', (message) => {
  message.no = no++;
  message.createTime = new Date().format("yyyy-MM-dd hh:mm:ss")
  for(const item in message) {
    if (message[item] instanceof Date) {
      message[item] = message[item].format("yyyy-MM-dd hh:mm:ss")
    }
  }
  sendMessage(message)
});



export default eventBus

// vm.$message('11111111')


// Date 序列化
Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
  }
